

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
<script type="text/javascript" src="helpman_topicinit.js"></script>

<title>Code Generation - Interaction Diagrams [Enterprise Architect User Guide]</title>

<meta name="keywords" content="Enterprise Architect, Sparx Systems, UML, Generate Code,Generate Code From Interaction Diagrams,Generate Code From Sequence Diagrams,Interaction Diagram,Interaction Diagram Generate Code From,Sequence Diagram,Sequence Diagram Generate Code From,Code Generation,Code Generation From Interaction Diagrams,Code Generation From Sequence Diagrams">
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<meta http-equiv="Content-Style-Type" content="text/css" />

<link type="text/css" href="default.css" rel="stylesheet" />
<style type="text/css">
  A, A:Visited
  {
    color: #00F;
  }

  A:Active, A:Hover
  {
    color: #F00;
  }

  OL
  {
    margin: 5px 0 5px 48px;
  }

  UL
  {
    margin-bottom: 3px;
    margin-top: 0;
  }

  #nsr
  {
    background-color: #D4DFFF;
  }

  #nsr A
  {
    text-decoration: none;
  }

  #mainbody
  {
    padding: 8px;
  }

  .p_BodyText
  {
    padding: 5px 0;
  }
</style>



<style type="text/css" media="screen">
  BODY
  {
    background-color: #FFFFFF;
  }

  #nsr
  {
    padding: 6px 6px 0 6px;
    border-bottom: none;
    vertical-align: top;
    z-index: 2;
    visibility: visible;
    left: 0;
    top: 0;
    position: absolute;
  }

  #mainbody
  {
    left: 0;
    top: 0;
    margin: 0;
    position: absolute;
    padding: 10px;
    overflow: auto;
    height: 100%;
    z-index: 1;
    background-repeat: no-repeat;
    background-position: bottom right;
    background-attachment: fixed;
  }
</style>

<style type="text/css" media="print">
  #nsr
  {
    visibility: none;
  }

  #mainbody
  {
    overflow: visible;
  }
</style>
<script type="text/javascript" language="JavaScript" src="nonscroll.js"></script>

</head>
<body scroll="no">

<div id="page">



        <div id="content">
          <div id="content-inner">
          



  
          <div id="nsr">
            <table border="0" cellspacing="0" cellpadding="4" width="100%">
              <tr valign="top">
                <td align="left">
  


                  <p class="p_Heading1"><span class="f_Heading1">Code Generation - Interaction Diagrams</span></p>



  
                </td>
                <td align="right">
                  <a href="introduction.htm" onmouseover="document.images.main.src='button_main_h.gif'" onmouseout="document.images.main.src='button_main.gif'">
                    <img name="main" src="button_main.gif" border=0 alt="Return to Introduction">
                  </a>&nbsp;
    
                  <a href="hw_code_generation___state_mac.htm" onmouseover="document.images.prev.src='button_prev_h.gif'" onmouseout="document.images.prev.src='button_prev.gif'">
                    <img name=prev src="button_prev.gif" border=0 alt="Previous page" />
                  </a>&nbsp;
    
    
    
                  <a href="code_generation___activity_dia.htm" onmouseover="document.images.next.src='button_next_h.gif'" onmouseout="document.images.next.src='button_next.gif'">
                    <img name=next src="button_next.gif" border=0 alt="Next page" />
                  </a>
    
    
                </td>
              </tr>
            </table>
          </div>
          <div id="mainbody">
  


                <p class="p_BodyText"><span class="f_BodyText">Code generation from <a href="sequencediagram.htm">Interaction (Sequence) diagrams</a> in a Class applies Enterprise Architect's system engineering graph optimizer to transform its constructs into programmatic paradigms. Messages and Fragments are identified as one of the several action types based on their functionality, and the </span><span class="f_BodyText" style="font-style: italic;">EASL code generation templates</span><span class="f_BodyText"> are used to render their behavior accordingly. For example:</span></p>
<ul style="text-indent: 0px; margin-left: 30px; list-style-position: outside;">
<li><span class="f_Bulletlist1">A Message that invokes an operation is identified as an </span><span class="f_Bulletlist1" style="font-style: italic;">Action Call</span><span class="f_Bulletlist1"> and is rendered accordingly</span></li>
<li><span class="f_Bulletlist1">Combined Fragments are identified by their types and conditions; for instance, an </span><span class="f_Bulletlist1" style="font-style: italic;">Alt</span><span class="f_Bulletlist1"> fragment is identified as an </span><span class="f_Bulletlist1" style="font-style: italic;">Action If</span><span class="f_Bulletlist1">, and a </span><span class="f_Bulletlist1" style="font-style: italic;">loop</span><span class="f_Bulletlist1"> fragment is identified as an </span><span class="f_Bulletlist1" style="font-style: italic;">Action Loop</span><span class="f_Bulletlist1">.</span></li>
</ul>
<p class="p_BodyText"><span class="f_BodyText">For more information on the EASL code generation macros and templates used to generate code from behavioral models see the </span><span class="f_BodyText" style="font-style: italic;"><a href="easl_code_generation_macros.htm">EASL Code Generation Macros</a></span><span class="f_BodyText"> topic.</span></p>
<p class="p_TextIndentedL2"><img src="sd%20newtransaction.png" width="552" height="353" border="0" alt="sd newTransaction"></p>
<p class="p_BodyText"><span class="f_BodyText">The above diagram contains:</span></p>
<ul style="text-indent: 0px; margin-left: 30px; list-style-position: outside;">
<li><span class="f_Bulletlist1">A Combined Fragment (</span><span class="f_Bulletlist1" style="font-style: italic;">alt</span><span class="f_Bulletlist1"> ), which is identified as an </span><span class="f_Bulletlist1" style="font-style: italic;">Action If</span></li>
<li><span class="f_Bulletlist1">An Interaction Occurrence, which is identified as an </span><span class="f_Bulletlist1" style="font-style: italic;">Action Call</span><span class="f_Bulletlist1"> with all argument information associated with it, and</span></li>
<li><span class="f_Bulletlist1">A message (</span><span class="f_Bulletlist1" style="font-style: italic;">Action Opaque</span><span class="f_Bulletlist1">).</span></li>
</ul>
<p class="p_BodyText"><span class="f_BodyText">The Java code generated from this diagram resembles the following:</span></p>
<p class="p_Code"><span class="f_Code">public void newTransaction()</span></p>
<p class="p_Code"> &nbsp; &nbsp; &nbsp; &nbsp;<span class="f_Code">{</span></p>
<p class="p_Code"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="f_Code">// behavior is an Interaction</span></p>
<p class="p_Code"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="f_Code">if (bValidUser) &nbsp; &nbsp; &nbsp; &nbsp;// Alt combined fragment</span></p>
<p class="p_Code"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="f_Code">{</span></p>
<p class="p_Code"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="f_Code">placeOrder(101); //Interaction Occurrence</span></p>
<p class="p_Code"><span class="f_Code">&nbsp;</span></p>
<p class="p_Code"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="f_Code">}</span></p>
<p class="p_Code"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="f_Code">else</span></p>
<p class="p_Code"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="f_Code">{</span></p>
<p class="p_Code"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="f_Code">return;</span></p>
<p class="p_Code"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="f_Code">}</span></p>
<p class="p_Code"> &nbsp; &nbsp; &nbsp; &nbsp;<span class="f_Code">}</span></p>




            </div>
          </div>
        </div>



</div>


</body>
</html>
